import { execSync } from 'child_process'
import { app } from 'electron'

/**
 * 检测是否有抓包软件在运行
 * @returns {boolean} 是否检测到抓包软件
 */
function detectPacketCaptureSoftware() {
  try {
    // 常见抓包软件进程名列表
    const packetCaptureProcesses = [
      'Wireshark.exe',
      'Fiddler.exe',
      'Charles.exe',
      'BurpSuite.exe',
      'tcpdump.exe',
      'tshark.exe',
      'ProxyCap.exe',
      'Proxifier.exe',
      'mitmproxy.exe'
    ]

    // 执行tasklist命令获取进程列表
    const taskList = execSync('tasklist', { encoding: 'utf8' })

    // 检查是否存在抓包软件进程
    for (const processName of packetCaptureProcesses) {
      if (taskList.includes(processName)) {
        console.log(`检测到抓包软件: ${processName}`)
        return true
      }
    }

    return false
  } catch (error) {
    console.error('检测抓包软件时出错:', error)
    return false
  }
}

/**
 * 防抓包检测主函数
 */
function antiPacketCapture() {
  if (detectPacketCaptureSoftware()) {
    console.log('检测到抓包软件，正在退出程序...')
    // 显示一个警告对话框
    require('electron').dialog.showMessageBoxSync({
      type: 'error',
      title: '安全警告',
      message: '检测到抓包软件正在运行，为了保护数据安全，程序将退出。'
    })
    app.quit()
  }
}

module.exports = {
  antiPacketCapture
}